using System;
using System.Collections.Generic;
using System.ServiceModel;

using SIMA.Entities;
using SIMA.Core.Enums;
using SIMA.Core.Security;

namespace SIMA.Services
{

	[ServiceContract]
	public interface IT_C_UsuarioService
	{
		#region Get all T_C_Usuario
		[OperationContract]
		List<T_C_Usuario> GetAllT_C_Usuario(Profile securityProfile);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginGetAllT_C_Usuario(Profile securityProfile, AsyncCallback callback, object state);

		List<T_C_Usuario> EndGetAllT_C_Usuario(IAsyncResult asyncResult);

		#endregion

		#region Get filtered T_C_Usuario
		[OperationContract]
		List<T_C_Usuario> GetFilteredT_C_Usuario(Profile securityProfile, FilterType filter);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginGetFilteredT_C_Usuario(Profile securityProfile, FilterType filter, AsyncCallback callback, object state);

		List<T_C_Usuario> EndGetFilteredT_C_Usuario(IAsyncResult asyncResult);

		#endregion

		#region New T_C_Usuario
		[OperationContract]
		string RegisterT_C_Usuario(Profile securityProfile, T_C_Usuario newItem);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginRegisterT_C_Usuario(Profile securityProfile, T_C_Usuario newItem, AsyncCallback callback, object state);

		string EndRegisterT_C_Usuario(IAsyncResult asyncResult);

		#endregion

		#region Update T_C_Usuario
		[OperationContract]
		string UpdateT_C_Usuario(Profile securityProfile, T_C_Usuario itemToUpdate, T_C_Usuario itemUpdated);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginUpdateT_C_Usuario(Profile securityProfile, T_C_Usuario itemToUpdate, T_C_Usuario itemUpdated, AsyncCallback callback, object state);

		string EndUpdateT_C_Usuario(IAsyncResult asyncResult);

		#endregion

		#region Delete T_C_Usuario
		[OperationContract]
		string DeleteT_C_Usuario(Profile securityProfile, T_C_Usuario dropItem);

		[OperationContract(AsyncPattern = true)]
		IAsyncResult BeginDeleteT_C_Usuario(Profile securityProfile, T_C_Usuario dropItem, AsyncCallback callback, object state);

		string EndDeleteT_C_Usuario(IAsyncResult asyncResult);

		#endregion

	}
}

